﻿using SvCore;
using SvGame.Objects;
using Zpb;

namespace SvGame.Logic;

public static partial class GameLogic
{
    // 新建尸体
    public static bool CorpseMake(this IRole me)
    {
        if (!ConfItemExt.TryGetValue(EGlobalId.系统尸体道具ID.ValueInt(), out var conf))
        {
            return false;
        }
        var result = NewItem(conf, 1, out var obj);
        if (me.Room != null)
        {
            obj.Name = $"{me.Name}的尸体";
            obj.Desc = $"{me.Name}，然而，{GenderPronoun(me.Gender)}已经死了，只剩下一具尸体静静地躺在这里。";
            me.Room.AddItem(obj);
        }
        return result;
    }
    public static void CorpseDecay(Item obj, int decayed)
    {
        if (decayed == 1)
        {
            obj.GetRoom()?.Message($"{obj.Name}开始腐烂了，发出一股难闻的恶臭。");
            obj.Name = $"腐烂的尸体";
            obj.Desc = $"这具尸体显然已经躺在这里有一段时间了，正散发着一股腐尸的味道。";
            obj.Callout(60, CorpseDecay, 2);
        }
        else if (decayed == 2)
        {
            obj.GetRoom()?.Message($"{obj.Name}被风吹干了，变成一具骸骨。");
            obj.Name = $"枯干的骸骨";
            obj.Desc = $"这副骸骨已经躺在这里很久了。";
            obj.Callout(60, CorpseDecay, 3);
        }
        else
        {
            obj.GetRoom()?.Message($"一阵风吹过，把{obj.Name}化成骨灰吹散了。");
            obj.GetRoom()?.RemoveItem(obj.Uid);
        }
    }
}
